جزوه · فصل دهم · جلسه ۹۵ · بررسی ورود به سیستم ← بازگشت به فهرست
📘 فصل دهم · جلسه ۹۵ بررسی ورود به سیستم
📅 تاریخ: شنبه، ۷ شهریور ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی) · 📦 Red Hat
این جلسه یکی از مباحث پایه‌ای در مدیریت سیستم و امنیت است. فرمان‌های who، w و last در آزمون‌های LPIC و RHCSA بسیار پرتکرارند.
👤 قبل از شروع، یه مثال ساده:

فرض کن تو یه شرکت کار می‌کنی و می‌خوای بدونی چه کسانی الان توی ساختمان هستن، کی اومدن و چیکار می‌کنن. توی لینوکس، بررسی ورود به سیستم دقیقاً همینه: به مدیر سیستم کمک می‌کنه تا بفهمه چه کاربرانی لاگین کردن، کی لاگین کردن، و چقدر هستن. این جلسه بهت یاد میده چطور با سه فرمان مهم who، w و last این اطلاعات رو به دست بیاری!

▍ مقدمه

یکی از وظایف مهم یک مدیر سیستم، نظارت بر ورود و خروج کاربران است. این کار به چند دلیل انجام می‌شود:

🔑 نکته کلیدی: لینوکس به طور پیش‌فرض تمام اطلاعات مربوط به ورود و خروج کاربران را در فایل‌های لاگ ذخیره می‌کند. فرمان‌هایی که در این جلسه یاد می‌گیریم، این اطلاعات را به صورت خوانا به ما نمایش می‌دهند.

▍ فرمان اول: who

who ساده‌ترین فرمان برای نمایش کاربرانی است که در حال حاضر به سیستم لاگین هستند. این فرمان اطلاعات زیر را نشان می‌دهد:

┌──(ya3in㉿kali)-[~] └─$ who ya3in seat0 2026-09-07 09:08 (:0) root pts/0 2026-09-07 10:15 (192.168.1.100) ali pts/1 2026-09-07 10:30 (192.168.1.101)

توضیح:

• گزینه‌های مفید who

گزینه کاربرد مثال
-b نمایش زمان آخرین راه‌اندازی سیستم (Boot) who -b
-r نمایش سطح اجرایی (Runlevel) فعلی who -r
-u نمایش زمان بیکاری (Idle) کاربران who -u
-H نمایش هدر (عنوان ستون‌ها) who -H
--login نمایش کاربرانی که با لاگین کامل وارد شده‌اند who --login
نکته: who -u زمان بیکاری کاربران را نشان می‌دهد. اگر کاربر فعال باشد، یک . (نقطه) نمایش داده می‌شود.

▍ فرمان دوم: w

w یک فرمان پیشرفته‌تر از who است که علاوه بر نمایش کاربران لاگین‌شده، اطلاعات زیر را نیز نشان می‌دهد:

┌──(ya3in㉿kali)-[~] └─$ w 10:35:18 up 1:27, 3 users, load average: 0.08, 0.03, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT ya3in seat0 :0 09:08 1:27m 2.35s 0.12s /usr/bin/gnome-shell root pts/0 192.168.1.100 10:15 5.00s 0.45s 0.05s w ali pts/1 192.168.1.101 10:30 2:30 0.32s 0.10s ssh

توضیح ستون‌ها:

💡 نکته: w برای مدیران سیستم بسیار مفید است چون هم بار سیستم و هم فعالیت کاربران را در یک نگاه نشان می‌دهد.

• گزینه‌های مفید w

گزینه کاربرد مثال
-h عدم نمایش هدر (عنوان ستون‌ها) w -h
-s نمایش مختصر (بدون JCPU، PCPU) w -s
-u نمایش زمان بیکاری به همراه PID w -u
username نمایش فقط اطلاعات یک کاربر خاص w root
نکته: w در واقع ترکیبی از دستورات who، uptime و ps است.

▍ فرمان سوم: last

last یک فرمان تاریخی است که آخرین ورودهای کاربران را از فایل /var/log/wtmp نمایش می‌دهد. برخلاف who و w که فقط کاربران فعال را نشان می‌دهند، last تمام ورودها و خروج‌های ثبت‌شده را نشان می‌دهد.

┌──(ya3in㉿kali)-[~] └─$ last ya3in seat0 :0 Sat Sep 7 09:08 still logged in root pts/0 192.168.1.100 Sat Sep 7 10:15 - 10:35 (00:20) ali pts/1 192.168.1.101 Sat Sep 7 10:30 - 11:00 (00:30) ya3in pts/2 192.168.1.50 Fri Sep 6 22:00 - 23:30 (01:30) reboot system boot 6.1.0-23-amd64 Fri Sep 6 08:00 still running

توضیح:

• گزینه‌های مفید last

گزینه کاربرد مثال
-n N نمایش N خط آخر last -n 5
-x نمایش اطلاعات کامل (شامل Shutdown و Runlevel) last -x
-i نمایش آدرس IP به جای نام هاست last -i
-d نمایش تاریخ به صورت خوانا last -d
username نمایش فقط ورودهای یک کاربر خاص last ya3in
reboot نمایش زمان‌های راه‌اندازی مجدد last reboot
shutdown نمایش زمان‌های خاموش شدن last shutdown
نکته: فایل /var/log/wtmp اطلاعات ورود و خروج کاربران را ذخیره می‌کند. این فایل باینری است و فقط با last یا utmpdump قابل خواندن است.

▍ مقایسه سه فرمان

ویژگی who w last
کاربران فعلی ✅ بله ✅ بله ❌ خیر (تاریخی)
تاریخچه ورود ❌ خیر ❌ خیر ✅ بله
بار سیستم (Load) ❌ خیر ✅ بله ❌ خیر
فرمان در حال اجرا ❌ خیر ✅ بله ❌ خیر
زمان بیکاری با -u ✅ بله ❌ خیر
منبع اطلاعات /var/run/utmp /var/run/utmp /var/log/wtmp
✅ جمع‌بندی نهایی:
  • who → نمایش کاربران فعال فعلی (ساده).
  • w → نمایش کاربران فعال به همراه بار سیستم و فرمان در حال اجرا (پیشرفته).
  • last → نمایش تاریخچهٔ کامل ورود و خروج کاربران.
  • last -n 5 → نمایش ۵ ورود آخر.
  • last username → نمایش ورودهای یک کاربر خاص.
  • last reboot → نمایش زمان‌های راه‌اندازی مجدد.
📝 تمرین پیشنهادی:

یک اسکریپت بنویسید که:

  • با who تعداد کاربران فعلی سیستم را بشمارد.
  • با w بار سیستم (Load Average) را نمایش دهد.
  • با last -n 3 سه ورود آخر را نمایش دهد.
  • با last reboot زمان آخرین راه‌اندازی مجدد را نمایش دهد.